home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / _archvrs / unix / freeze-2.lha / freeze / debug.c < prev    next >
C/C++ Source or Header  |  1993-02-22  |  2KB  |  84 lines

  1. #if defined(DEBUG)
  2. #include "freeze.h"
  3. #include "huf.h"
  4. #include "bitio.h"
  5.  
  6.           /*---------------------------*/
  7.           /*      DEBUG      MODULE    */
  8.           /*---------------------------*/
  9. void
  10. printcodes(mode)
  11. {
  12.     /*
  13.      * Just print out codes from input file.  For debugging.
  14.      */
  15.     register short k, c, col = 0;
  16.  
  17. #ifdef COMPAT
  18.     if (!mode) {
  19.         StartHuff(N_CHAR1);
  20.         init(Table1);
  21.     } else
  22. #endif
  23.     {
  24.         if (read_header() == EOF) {
  25.             fprintf(stderr, "Bad header\n");
  26.             return;
  27.         }
  28.         StartHuff(N_CHAR2);
  29.         init(Table2);
  30.     }
  31.  
  32.     InitIO();
  33.  
  34.     for (;;) {
  35.  
  36.         if((c = DecodeChar()) == ENDOF)
  37.             break;
  38.         if (c < 256) {
  39.         fprintf(stderr, "%5d%c", c,
  40.             (col+=8) >= 74 ? (col = 0, '\n') : '\t' );
  41.         } else {
  42.         c = c - 256 + THRESHOLD;
  43.  
  44.         k = DecodePosition();
  45.  
  46.         fprintf(stderr, "%2d-%d%c", c, k,
  47.             (col+=8) >= 74 ? (col = 0, '\n') : '\t' );
  48.         }
  49.     }
  50.     putc( '\n', stderr );
  51.     exit( 0 );
  52. }
  53.  
  54. /* for pretty char printing */
  55.  
  56. char *
  57. pr_char(c)
  58.     register uc_t c;
  59. {
  60.     static char buf[5];
  61.     register i = 4;
  62.     buf[4] = '\0';
  63.     if ( (isascii((int)c) && isprint((int)c) && c != '\\') || c == ' ' ) {
  64.         buf[--i] = c;
  65.     } else {
  66.         switch( c ) {
  67.         case '\n': buf[--i] = 'n'; break;
  68.         case '\t': buf[--i] = 't'; break;
  69.         case '\b': buf[--i] = 'b'; break;
  70.         case '\f': buf[--i] = 'f'; break;
  71.         case '\r': buf[--i] = 'r'; break;
  72.         case '\\': buf[--i] = '\\'; break;
  73.         default:
  74.         buf[--i] = '0' + c % 8;
  75.         buf[--i] = '0' + (c / 8) % 8;
  76.         buf[--i] = '0' + c / 64;
  77.         break;
  78.         }
  79.         buf[--i] = '\\';
  80.     }
  81.     return &buf[i];
  82. }
  83. #endif
  84.